package com.aegis.manage.service.sys.user;

import com.aegis.common.mybatis.base.IBaseService;
import com.aegis.common.mybatis.model.PageResult;
import com.aegis.manage.api.request.CreateUserRequest;
import com.aegis.manage.api.request.UpdateUserProfileRequest;
import com.aegis.manage.api.request.UpdateUserRequest;
import com.aegis.manage.api.vo.SysUserVO;
import com.aegis.manage.api.vo.UserDetailVO;
import com.aegis.manage.model.dos.SysUser;

import java.util.Set;

/**
 * @Author renogo
 *
 * @Version 1.0
 */
public interface SysUserService extends IBaseService<SysUser> {



    /**
     * 根据用户名获取用户
     *
     * @param username
     * @return
     */
    SysUser getUserByUsernameAndPwd(String username, String password);


    /**
     * 根据用户名获取用户
     *
     * @param username
     * @return
     */
    SysUser getUserByUsername(String username);


    /**
     * 创建用户
     *
     * @param createUserRequest
     * @return
     */
    String createUser(CreateUserRequest createUserRequest);

    /**
     * 查询用户列表
     *
     * @param current
     * @param size
     * @param keywords
     * @return
     */
    PageResult<SysUserVO> selectUserPage(int current, int size, String keywords);

    /**
     * 删除用户
     *
     * @param userId
     */
    void delUser(String userId);

    /**
     * 查询用户详情
     *
     * @return
     */
    UserDetailVO getUserDetailById(String userId);


    /**
     * 更新用户信息
     *
     * @param updateUserRequest
     */
    void updateByUserId(UpdateUserRequest updateUserRequest);

    /**
     *
     * @param updateUserProfileRequest
     */
    void updateUserProfile(UpdateUserProfileRequest updateUserProfileRequest);


    /**
     * 绑定用户角色
     *
     * @param userId
     * @param roleIds
     */
    void bindUserRole(String userId, Set<String> roleIds);





}
